package cn.net.yugu.doraemon.netty.protocol.msg05;

import lombok.Data;
import lombok.ToString;

import java.util.regex.Pattern;

/**
 * 电池心跳版本
 */
@Data
@ToString
public class HeartParam {
    static final Pattern LNG_PATTERN = Pattern.compile("(\\d{3})(\\d{2}\\.\\d{4})");
    static final Pattern LAT_PATTERN = Pattern.compile("(\\d{2})(\\d{2}\\.\\d{4})");

    public String jsonData;//心跳json数据

    public String batteryId;
    public Integer heartType;

    //请求参数
    public String IMEI;//电池IMEI
    public String CCID;//Sim卡CCID号
    public String BmsVer;//BMS版本
    public Integer LocType;//位置类型（1.GPS 2.CELL）
    public Integer Sig;//信号强度（1-31）
    public Integer SigType;//信号类型
    public String LBS;//基站信息“mcc,mnc,lac,cellid”
    public String Lng;//经度
    public String Lat;//纬度
    public Integer Vol;//总电压,mV
    public Integer Cur;//电流,单位mA,放电负，充电正
    public Integer Cells;//电芯串数
    public String VolList;//单体电压列表，单位mV
    public Integer Bal;//电芯的均衡状态0关闭,1开启
    public Integer BalCur;//主动均衡电流值，单位mA
    public String Temp;//温度
    public Integer ResCap;//剩余容量,单位mAH
    public Integer Soc;//Soc电量，单位0.1%
    public Integer Circle;//循环次数
    public Integer MOS;//充放电MOS状态
    public Integer Fault;//故障类型
    public Integer Heart;//心跳间隔
    public Integer Motion;//运动值(0:静止,1-10:运动等级)
    public Integer Uncap;//开盖状态(0:未开盖 1:开盖)
    public Integer Mode;//工作状态：0正常，1：待机
    public String Protect;//保护次数列表
    public Integer BatteryLease;//电池租期
    public Integer Status;
    /**
     * 安全断电开关.
     */
    public Integer SafeShut;


    //long heart
    public String CellModel;//电池型号
    public String CellMFR;//电芯厂家
    public String BattMFR;//电池厂家
    public String MFD;//生产日期
    public String BmsModel;//BMS型号
    public Integer Mat;//材质（1.三元,2.磷酸铁锂,3.铅酸）
    public Integer BattType;//电池类型
    public Integer NomCap;//标准容量,单位mAH
    public Integer CircleCap;//循环容量,单位mAH
    public Integer CellFullVol;//单体充满电压，单位mV
    public Integer CellCutVol;//单体截止电压，单位mV
    public Integer SelfDsgRate;//自放电率，单位0.1%
    public String OCVTable;//开路电压值,单位mV

    public Integer COVTrip;//单体过压保护阈值，单位mV
    public Integer COVResm;//单体过压恢复阈值，单位mV
    public Integer COVDelay;//单体过压延时，单位S
    public Integer CUVTrip;//单体欠压保护阈值，单位mV
    public Integer CUVResm;//单体欠压恢复阈值，单位mV
    public Integer CUVDelay;//单体欠压延时，单位S
    public Integer POVTrip;//整体过压保护阈值，单位mV
    public Integer POVResm;//整体过压恢复阈值，单位mV
    public Integer POVDelay;//整体过压延时，单位S
    public Integer PUVTrip;//整体欠压保护阈值，单位mV
    public Integer PUVResm;//整体欠压恢复阈值，单位mV
    public Integer PUVDelay;//整体欠压延时，单位S
    public Integer ChgOTTrip;//充电高温保护阈值，单位0.1K
    public Integer ChgOTResm;//充电高温恢复阈值，单位0.1K
    public Integer ChgOTDelay;//充电高温延时，单位S
    public Integer ChgUTTrip;//充电低温保护阈值，单位0.1K
    public Integer ChgUTResm;//充电低温恢复阈值，单位0.1K
    public Integer ChgUTDelay;//充电低温延时，单位S
    public Integer DsgOTTrip;//放电高温保护阈值，单位0.1K
    public Integer DsgOTResm;//放电高温恢复阈值，单位0.1K
    public Integer DsgOTDelay;//放电高温延时，单位S
    public Integer DsgUTTrip;//放电低温保护阈值，单位0.1K
    public Integer DsgUTResm;//放电低温恢复阈值，单位0.1K
    public Integer DsgUTDelay;//放电低温延时，单位S
    public Integer ChgOCTrip;//充电过流保护阈值，单位mA
    public Integer ChgOCDelay;//充电过流延时，单位S
    public Integer ChgOCRels;//充电过流释放时间，单位S
    public Integer DsgOCTrip;//放电过流保护阈值，单位mA
    public Integer DsgOCDelay;//放电过流延时，单位S
    public Integer DsgOCRels;//放电过流释放时间，单位S
    public Integer RSNS;//1：硬件过流、短路保护阈值翻倍
    public Integer HardOCTrip;//硬件过流保护阈值
    public Integer HardOCDelay;//硬件过流保护延时
    public Integer SCTrip;//短路保护阈值
    public Integer SCDelay;//短路保护延时
    public Integer HardOVTrip;//硬件单体过压保护阈值,单位mV
    public Integer HardOVDelay;//硬件单体过压保护延时
    public Integer HardUVTrip;//硬件单体欠压保护阈值,单位mV
    public Integer HardUVDelay;//硬件单体欠压保护延时
    public Integer SDRels;//短路释放时间
    public Integer Function;//功能配置
    public Integer NTCConfig;//NTC配置
    public Integer SampleR;//电流采样电阻值，单位0.1R


    public Integer Motionless; //静止状态时心跳间隔
    public Integer Standby;        //存储状态时心跳间隔
    public Integer Dormancy;        //休眠状态时心跳间隔

    public Long MaxCap;//实际容量,单位mAH
    public Integer BalStart;//均衡开启电压
    public Integer BalDiff;//均衡精度
    public Integer BalEnd;//均衡停止电压

    public Integer ParaMode;
    /**
     * mos 断电时间.
     */
    public String ShutTime;
}
